﻿using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Taxes
{
    internal class Homework07
    {
        /*作业题7:
        需求说明： 
        编写一个C#程序，提示用户输入月收入，根据中国的个人所得税率计算并输出应缴纳的税额。
        解题思路：
                获取用户输入：提示用户输入月收入。
                定义税率和速算扣除数：根据税率表设置不同薪资范围的税率和速算扣除数。
                计算税额：根据用户的月收入，应用相应的税率和速算扣除数计算应缴纳的税额。
                按月换算的个人所得税率表：
            薪资范围在1-5,000元之间的，税率为0%。
            薪资范围在5,000-8,000元之间的，税率为3%。
            薪资范围在8,000-17,000元之间的，税率为10%。
            薪资范围在17,000-30,000元之间的，税率为20%。
            薪资范围在30,000-40,000元之间的，税率为25%。
            薪资范围在40,000-60,000元之间的，税率为30%。*/

        //计算本级速算扣除数
        //本级速算扣除数 = 上一级最高应纳税所得额 × (本级税率 - 上一级税率) + 上一级速算扣除数。
        static double calculation_Num(int Num01, double tax_Rate01, double tax_Rate02, int Num02)
        {
            //Num01为上一级最高应纳税所得额,tax_Rate01为本级税率,tax_Rate02为上一级税率,Num02为上一级速算扣除数
            double Num = Num01 * (tax_Rate01 - tax_Rate02) + Num02;
            return Num;
        }

        static void Main(string[] args)
        {
            //键盘获取月收入
            Console.WriteLine("请输入月收入：");
            int Income = Convert.ToInt32(Console.ReadLine());
            //定义税率和速算扣除数
            //税率
            double tax_Rate = 0;
            //定义速算扣除数
            double Num = 0;

            //根据月收入计算应纳税额
            //calculation_Num(上一级最高应纳税所得额,本级税率,上一级税率,上一级速算扣除数)
            //应纳税额 = 应纳税所得额 × 适用税率 - 速算扣除数
            if (Income >= 1 && Income < 5000)
            {
                //工资1-5000
                tax_Rate = 0;
                Num = calculation_Num(0, tax_Rate, 0, 0);
                Console.WriteLine($"月收入{Income}的应纳税额为: 0元");
            }
            else if (Income >= 5000 && Income < 8000) 
            {
                //工资5000-8000
                tax_Rate = 0.03;
                Num = calculation_Num(0, tax_Rate, 0, 0);
                Console.WriteLine($"月收入{Income}的应纳税额为: {(Income - 5000) * tax_Rate - Num}元");
            }
            else if (Income >= 8000 && Income < 17000)
            {
                //工资8000-17000
                tax_Rate = 0.1;
                Num = calculation_Num(3000, tax_Rate, 0.03, 0);
                Console.WriteLine($"月收入{Income}的应纳税额为: {(Income - 5000) * tax_Rate - Num}元");
            }
            else if (Income >= 17000 && Income < 30000)
            {
                //工资17000-30000
                tax_Rate = 0.2;
                Num = calculation_Num(12000, tax_Rate, 0.1, 210);
                Console.WriteLine($"月收入{Income}的应纳税额为: {(Income - 5000) * tax_Rate - Num}元");
            }
            else if (Income >= 30000 && Income < 40000)
            {
                //工资30000-40000
                tax_Rate = 0.25;
                Num = calculation_Num(25000, tax_Rate, 0.2, 1410);
                Console.WriteLine($"月收入{Income}的应纳税额为: {(Income - 5000) * tax_Rate - Num}元");
            }
            else if (Income >= 40000 && Income < 60000)
            {
                //工资40000-60000
                tax_Rate = 0.3;
                Num = calculation_Num(35000, tax_Rate, 0.25, 2660);
                Console.WriteLine($"月收入{Income}的应纳税额为: {(Income - 5000) * tax_Rate - Num}元");
            }
            else if (Income >= 60000 && Income < 85000)
            {
                //工资60000-85000
                tax_Rate = 0.35;
                Num = calculation_Num(55000, tax_Rate, 0.3, 4410);
                Console.WriteLine($"月收入{Income}的应纳税额为: {(Income - 5000) * tax_Rate - Num}元");
            }
            else
            {
                //工资85000以上
                tax_Rate = 0.45;
                Num = calculation_Num(80000, tax_Rate, 0.35, 7160);
                Console.WriteLine($"月收入{Income}的应纳税额为: {(Income - 5000) * tax_Rate - Num}元");
            }
        }
    }
}
